/**
 * TAFREX is Copyright (c) 2012 - Claritize.com, based on project TARTAR
 * @author Radek Strnad - radek.strnad@claritize.com
 * TARTAR is Copyright (c) 2004-2005 - University of Karlsruhe (UKA) & Jozef Stefan Institute (JSI).
 * @author: Aleksander Pivk
 * 
 * Redistribution and use in source and binary forms, with or without modification,
 * are permitted provided that the following conditions are met:
 * 1. Redistributions of source code must retain the above copyright notice,
 * this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright notice,
 * this list of conditions and the following disclaimer in the documentation and/or
 * other materials provided with the distribution.
 * 
 * THIS SOFTWARE IS PROVIDED BY UKA & JSI "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES,
 * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL UKA or JSI NOR ITS EMPLOYEES BE
 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *
 */
package com.claritize.tafrex.table;

import java.util.ArrayList;
import java.util.List;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;

/**
 * Class provides methods for extracting leaf tables from HTML documents.
 */
public class TableExtractor {

    /**
     * Extracts leaf tables from the document. The leaf table is a table that
     * doesn't contain other tables. Sometimes tables are used for layout purposes
     * and nesting tables is a sign of this behaviour.
     * @param document Parsed JSoup document.
     * @return list of table elements
     */
    public List<Element> extractLeafTables (Document document) {
	List<Element> elemList = new ArrayList<Element>();

	/* Iterate over all tables in the document */
	for (Element tableElement : document.getElementsByTag("table")) {

	    /* Return only tables which doesn't contain tables */
	    if (tableElement.getElementsByTag("table").size() == 0) {
		elemList.add(tableElement);
	    }
	}

	return elemList;
    }

    /**
     * Extracts leaf tables from the HTML page.
     * @param html String containing HTML page
     * @return list of table elements
     */
    public List<Element> extractLeafTablesFromHtml (String html) {
	return extractLeafTables(Jsoup.parse(html));
    }

}



